import { RoleTiles, MapTiles, PropTiles, NPCTiles } from "../constants";
import {
  CementWall,
  Magma,
  Star,
  Wall,
  DoorBlue,
  DoorRed,
  DoorYellow,
  StaircaseDown,
  StaircaseUp,
  ShoppingMin,
  Shopping,
  DoorSpecial,
  DoorIronGate,
} from "@/element/map";

import {
  Hero,
  SlimeBlack,
  SlimeGreen,
  SlimeRed,
  Magician,
  Skeleton,
  SkeletonSoldier,
  Bat,
  Orc,
  OrcWarrior,
  GuardPrimary,
  BatBig,
  BatRed,
  DevilQueue,
  DevilRed,
  GuardHeight,
  GuardUnderworld,
  MagicianHeight,
  MagicianLinen,
  MagicianQuick,
  MagicianRed,
  SlimeKing,
  StoneMonster,
  SwordsmanBothHands,
  WarriorShadow,
  WarriorUnderworld,
  WeishiJin,
  KnightWhite,
  Dragon,
  Octopus,
  SkeletonCaptain,
  KnightCaptain,
  MetalsCaptain,
  UnderworldCaptain,
} from "@/element/role";

import {
  Drug,
  DrugMax,
  DrugMiddle,
  DrugMini,
  GemstoneBlue,
  GemstoneGreen,
  GemstoneRed,
  KeyBlue,
  KeyRed,
  KeyYellow,
  Book,
  Sword,
  SwordBig,
  SwordGod,
  Shield,
  ShieldBig,
  ShieldGod,
  KeyBag,
  CoinGold,
  CoinSilver,
  Level1,
  Level2,
  Level3,
  Compass,
  Pickaxe,
  Cross,
} from "@/element/prop";
import {
  Spirit,
  MerchantExp,
  MerchantKey,
  MerchantMinExp,
} from "@/element/npc";

import type { IDType } from "@/typings/constants";
import { Thief } from "@/element/npc/thief";
export const elements: { [key in IDType]: any } = {
  [RoleTiles.HERO]: Hero,
  [RoleTiles.SLIME_GREEN]: SlimeGreen,
  [RoleTiles.SLIME_RED]: SlimeRed,
  [RoleTiles.SLIME_BLACK]: SlimeBlack,
  [RoleTiles.ORC]: Orc,
  [RoleTiles.BAT]: Bat,
  [RoleTiles.MAGICIAN]: Magician,
  [RoleTiles.SKELETON]: Skeleton,
  [RoleTiles.SKELETON_SOLDIER]: SkeletonSoldier,
  [RoleTiles.KNIGHT_WHITE]: KnightWhite,
  [MapTiles.WALL]: Wall,
  [MapTiles.WALL_1]: CementWall,
  [MapTiles.MAGMA]: Magma,
  [MapTiles.STAR]: Star,
  [MapTiles.ROAD]: null,
  [MapTiles.STAIRCASE_DOWN]: StaircaseDown,
  [MapTiles.STAIRCASE_UP]: StaircaseUp,
  [MapTiles.DOOR_RED]: DoorRed,
  [MapTiles.DOOR_YELLOW]: DoorYellow,
  [MapTiles.DOOR_BLUE]: DoorBlue,
  [PropTiles.GEMSTONE_RED]: GemstoneRed,
  [PropTiles.GEMSTONE_BLUE]: GemstoneBlue,
  [PropTiles.GEMSTONE_GREEN]: GemstoneGreen,
  [PropTiles.KEY_RED]: KeyRed,
  [PropTiles.KEY_BLUE]: KeyBlue,
  [PropTiles.KEY_YELLOW]: KeyYellow,
  [PropTiles.KEY_BAG]: KeyBag,
  [PropTiles.DRUG_MINI]: DrugMini,
  [PropTiles.DRUG]: Drug,
  [PropTiles.DRUG_MIDDLE]: DrugMiddle,
  [PropTiles.DRUG_MAX]: DrugMax,
  [PropTiles.BOOK]: Book,
  [PropTiles.COMPASS]: Compass,
  [NPCTiles.SPIRIT]: Spirit,
  [NPCTiles.MERCHANT_MIN_EXP]: MerchantMinExp,
  [NPCTiles.MERCHANT_EXP]: MerchantExp,
  [NPCTiles.MERCHANT_KEY]: MerchantKey,
  [MapTiles.SHOPPING_MIN]: ShoppingMin,
  [MapTiles.SHOPPING]: Shopping,
  [PropTiles.SWORD]: Sword,
  [PropTiles.SWORD_BIG]: SwordBig,
  [PropTiles.SWORD_GOD]: SwordGod,
  [MapTiles.DOOR_SPECIAL]: DoorSpecial,
  [RoleTiles.SLIME_KING]: SlimeKing,
  [RoleTiles.ORC_WARRIOR]: OrcWarrior,
  [RoleTiles.BAT_BIG]: BatBig,
  [RoleTiles.BAT_RED]: BatRed,
  [RoleTiles.MAGICIAN_LINEN]: MagicianLinen,
  [RoleTiles.MAGICIAN_HEIGHT]: MagicianHeight,
  [RoleTiles.MAGICIAN_RED]: MagicianRed,
  [RoleTiles.MAGICIAN_QUICK]: MagicianQuick,
  [RoleTiles.SKELETON_CAPTAIN]: SkeletonCaptain,
  [RoleTiles.STONE_MONSTER]: StoneMonster,
  [RoleTiles.KNIGHT_CAPTAIN]: KnightCaptain,
  [RoleTiles.WEISHI_JIN]: WeishiJin,
  [RoleTiles.GUARD_UNDERWORLD]: GuardUnderworld,
  [RoleTiles.GUARD_HEIGHT]: GuardHeight,
  [RoleTiles.SWORDSMAN_BOTH_HANDS]: SwordsmanBothHands,
  [RoleTiles.WARRIOR_UNDERWORLD]: WarriorUnderworld,
  [RoleTiles.METALS_CAPTAIN]: MetalsCaptain,
  [RoleTiles.UNDERWORLD_CAPTAIN]: UnderworldCaptain,
  [RoleTiles.WARRIOR_SHADOW]: WarriorShadow,
  [RoleTiles.DEVIL_RED]: DevilRed,
  [RoleTiles.DEVIL_QUEUE]: DevilQueue,
  [RoleTiles.GUARD_PRIMARY]: GuardPrimary,
  [RoleTiles.DRAGON]: Dragon,
  [RoleTiles.OCTOPUS]: Octopus,
  [PropTiles.SHIELD]: Shield,
  [PropTiles.SHIELD_BIG]: ShieldBig,
  [PropTiles.SHIELD_GOD]: ShieldGod,
  [PropTiles.COIN_GOLD]: CoinGold,
  [PropTiles.COIN_SILVER]: CoinSilver,
  [PropTiles.LEVEL_1]: Level1,
  [PropTiles.LEVEL_2]: Level2,
  [PropTiles.LEVEL_3]: Level3,
  [PropTiles.PICKAXE]: Pickaxe,
  [PropTiles.CROSS]: Cross,
  [NPCTiles.THIEF]: Thief,
  [MapTiles.DOOR_IRON_GATE]: DoorIronGate,
};
